/**
 * 在线用户信息模型定义
 * 
 * 说明：
 * 1. 这是一个缓存模型，数据存储在Redis中，而非数据库表
 * 2. 与系统中其他使用Sequelize的模型不同，UserOnline仅为接口定义
 * 3. 在线用户数据是临时性的，会话结束后自动过期，不需要持久化到数据库
 * 4. 数据存储路径为Redis的 login_tokens:{tokenId} 键
 * 5. 该模型用于在线用户监控功能，支持查询在线用户、强制用户下线等操作
 */
export interface UserOnline {
  /**
   * 会话编号
   * 用作Redis中的唯一标识，通常是JWT令牌或UUID
   */
  tokenId: string;       // 会话编号
  
  /**
   * 用户ID
   * 对应系统用户表的主键
   */
  userId: number;        // 用户ID
  
  /**
   * 用户账号
   * 用户登录名
   */
  userName: string;      // 用户账号
  
  /**
   * 登录IP地址
   * 用户登录时的IP地址，用于安全审计和地理位置解析
   */
  ipaddr: string;        // 登录IP地址
  
  /**
   * 登录地点
   * 根据IP地址解析的地理位置信息
   */
  loginLocation: string; // 登录地点
  
  /**
   * 浏览器类型
   * 从User-Agent解析的浏览器名称和版本
   */
  browser: string;       // 浏览器类型
  
  /**
   * 操作系统
   * 从User-Agent解析的操作系统名称和版本
   */
  os: string;            // 操作系统
  
  /**
   * 部门名称
   * 用户所属部门
   */
  deptName: string;      // 部门名称
  
  /**
   * 登录时间
   * 格式为：yyyy-MM-dd HH:mm:ss
   */
  loginTime: string;     // 登录时间（yyyy-MM-dd HH:mm:ss）
} 